package com.jinbai.service;

import com.jinbai.data_object.UserDO;
import com.jinbai.repo.UserRepo;
import com.jinbai.view_object.UserVO;
import org.mindrot.jbcrypt.BCrypt;

import javax.servlet.http.Part;

public class UserService {
    private UserRepo userRepo = new UserRepo(); // 创建单例

    public UserVO registerUser(String username, String password) {
        // 对密码做加盐操作
        final String salt = BCrypt.gensalt();
        password = BCrypt.hashpw(password, salt);
        // 数据库的insert操作
        UserDO userDO = new UserDO(username, password);
        userRepo.registerUser(userDO);
        // 将数据库user形式转换为表现层的形式
        return new UserVO(userDO.getUid(), userDO.getUsername());
    }

    public UserVO loginUser(String username, String password) {
        // 现根据用户名在数据库中查找
        UserDO userDO = userRepo.selectUserByUsername(username);
        if (userDO == null) {
            return null;
        }

        // 检查用户输入密码是否正确
        // 在checkpw方法中传入用户输入的明文密码，和从表中查出来的密码
        if (BCrypt.checkpw(password, userDO.getPassword())) {
            return new UserVO(userDO);
        } else {
            return null; // 认为密码匹配不上
        }
    }
}
